package view; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Hashtable; import java.util.concurrent.ThreadFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import com.itextpdf.text.pdf.RadioCheckField; import model.Account; import model.Person; public class BankView extends JFrame { private JScrollPane scrollPersons; private JTable tablePersons; public DefaultTableModel modelPersons; private JScrollPane scrollAccounts; private JTable tableAccounts; private DefaultTableModel modelAccounts; private JPanel panelPersons; private JPanel panelAccounts; private JPanel panelPersonsOps; private JPanel panelAccountsOps; private JPanel panelPerson; private JPanel panelAccount; private JTextField tfSsid; private JTextField tfLastName; private JTextField tfFirstName; private JTextField tfPhoneNo; private JTextField tfBalance; private JButton btnAddPerson; private JButton btnRemovePerson; private JButton btnAddAccount; private JButton btnRemoveAccount; private JButton btnWithdraw; private JButton btnDeposit; private JButton btnStatement; private JRadioButton rbSpending; private JRadioButton rbSaving; private JTextField tfAmount; GridBagConstraints gbc; public BankView(){ super("Bank"); this.setSize(900,700); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLayout(new GridBagLayout()); gbc = new GridBagConstraints(); //create the panel containing the data about persons panelPersons = new JPanel(); createPanelPersons(panelPersons); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 0.5; gbc.gridx = 0; gbc.gridy = 0; this.add(panelPersons, gbc); panelAccounts = new JPanel(); createPanelAccounts(panelAccounts); gbc.gridx = 0; gbc.gridy = 1; this.add(panelAccounts, gbc); panelPersonsOps = new JPanel(); createPanelPersonsOps(panelPersonsOps); gbc.insets = new Insets(0,0,10,10); gbc.gridx = 1; gbc.gridy = 0; this.add(panelPersonsOps, gbc); panelAccountsOps = new JPanel(); createPanelAccountsOps(panelAccountsOps); gbc.gridx = 1; gbc.gridy = 1; gbc.insets = new Insets(0,0,0,10); this.add(panelAccountsOps, gbc); this.setVisible(true); } public void createPanelPersons(JPanel panelPersons){ Object[] rowCount = new Object[]{"SSID", "Last name", "First name", "PhoneNo"}; modelPersons = new DefaultTableModel(null, rowCount); tablePersons = new JTable(modelPersons); scrollPersons = new JScrollPane(tablePersons); scrollPersons.setPreferredSize(new Dimension(400, 300)); panelPersons.add(scrollPersons); } public void createPanelAccounts(JPanel panelAccounts){ Object[] rowCount1 = new Object[]{"Acc.Nr.", "Owner", "Type", "Balance"}; modelAccounts = new DefaultTableModel(null, rowCount1); tableAccounts = new JTable(modelAccounts); scrollAccounts = new JScrollPane(tableAccounts); scrollAccounts.setPreferredSize(new Dimension(400, 300)); panelAccounts.add(scrollAccounts); } public void createPanelPersonsOps(JPanel panelPersonsOps){ GridBagLayout layout = new GridBagLayout(); panelPersonsOps.setLayout(layout); GridBagConstraints gbcp = new GridBagConstraints(); btnAddPerson=new JButton("Add person"); btnRemovePerson = new JButton("Remove person"); btnAddAccount = new JButton("Add account"); btnRemoveAccount = new JButton("Remove account"); panelPerson = new JPanel(new GridLayout(4, 4)); JLabel lblSsid = new JLabel("SSID: "); JLabel lblLastName = new JLabel("Last Name: "); JLabel lblFirstName = new JLabel("First Name: "); JLabel lblPhoneNo = new JLabel("Phone No: "); tfSsid = new JTextField(); tfLastName = new JTextField(); tfFirstName = new JTextField(); tfPhoneNo = new JTextField(); panelPerson.add(lblSsid); panelPerson.add(tfSsid); panelPerson.add(lblLastName); panelPerson.add(tfLastName); panelPerson.add(lblFirstName); panelPerson.add(tfFirstName); panelPerson.add(lblPhoneNo); panelPerson.add(tfPhoneNo); gbcp.fill = GridBagConstraints.HORIZONTAL; gbcp.gridx = 0; gbcp.gridy = 0; panelPersonsOps.add(panelPerson, gbcp); gbcp.gridx = 0; gbcp.gridy = 1; panelPersonsOps.add(btnAddPerson, gbcp); gbcp.gridx = 0; gbcp.gridy = 2; panelPersonsOps.add(btnRemovePerson, gbcp); panelAccount = new JPanel(new GridLayout(2, 2)); rbSaving = new JRadioButton("Saving account", true); rbSpending = new JRadioButton("Spending account"); ButtonGroup radio = new ButtonGroup(); radio.add(rbSaving); radio.add(rbSpending); panelAccount.add(rbSaving); panelAccount.add(rbSpending); tfBalance = new JTextField(); JLabel lblBalance = new JLabel("Initial balance:"); panelAccount.add(lblBalance); panelAccount.add(tfBalance); gbcp.gridx = 0; gbcp.gridy = 3; panelPersonsOps.add(panelAccount, gbcp); gbcp.gridx = 0; gbcp.gridy = 4; panelPersonsOps.add(btnAddAccount, gbcp); gbcp.gridx = 0; gbcp.gridy = 5; panelPersonsOps.add(btnRemoveAccount, gbcp); } public void createPanelAccountsOps(JPanel panelAccountsOps){ GridLayout layout = new GridLayout(3,2); layout.setVgap(10); layout.setHgap(5); panelAccountsOps.setLayout(layout); btnWithdraw=new JButton("Withdraw"); btnDeposit = new JButton("Deposit"); btnStatement = new JButton("Generate Bank Statement"); JLabel lblAmount = new JLabel("Amount:"); tfAmount = new JTextField(); panelAccountsOps.add(lblAmount); panelAccountsOps.add(btnWithdraw); panelAccountsOps.add(tfAmount); panelAccountsOps.add(btnDeposit); panelAccountsOps.add(btnStatement); } public JPanel getPanelAccounts() { return panelAccounts; } public void setPanelAccounts(JPanel panelAccounts) { this.panelAccounts = panelAccounts; } public JPanel getPanelPersonsOps() { return panelPersonsOps; } public void setPanelPersonsOps(JPanel panelPersonsOps) { this.panelPersonsOps = panelPersonsOps; } public JPanel getPanelAccountsOps() { return panelAccountsOps; } public void setPanelAccountsOps(JPanel panelAccountsOps) { this.panelAccountsOps = panelAccountsOps; } public void addAddPersonButtonListener(ActionListener l){ btnAddPerson.addActionListener(l); } public void addRemovePersonButtonListener(ActionListener l){ btnRemovePerson.addActionListener(l); } public void addAddAccountButtonListener(ActionListener l){ btnAddAccount.addActionListener(l); } public void addRemoveAccountButtonListener(ActionListener l){ btnRemoveAccount.addActionListener(l); } public void addWithdrawButtonListener(ActionListener l){ btnWithdraw.addActionListener(l); } public void addDepositButtonListener(ActionListener l){ btnDeposit.addActionListener(l); } public void addGenerateStatementButtonListener(ActionListener l){ btnStatement.addActionListener(l); } public void addTablePersonsActionListener(TableModelListener tme) { modelPersons.addTableModelListener(tme); } public void addTableAccountsActionListener(TableModelListener tme) { modelAccounts.addTableModelListener(tme); } public DefaultTableModel getModelPersons() { return this.modelPersons; } public void setModelPersons(DefaultTableModel modelPersons){ this.modelPersons = modelPersons; } public DefaultTableModel getModelAccounts() { return this.modelAccounts; } public void setModelAccounts(DefaultTableModel modelAccounts){ this.modelAccounts = modelAccounts; } public void fillTablePersons(Hashtable<Person, ArrayList<Account>> bankData){ this.modelPersons.setRowCount(0); for (Person person : bankData.keySet()) { this.modelPersons.addRow(new Object[]{person.getSsid(), person.getLastName(), person.getFirstName(), person.getPhoneNo()}); } } public void fillTableAccounts(Hashtable<Person, ArrayList<Account>> bankData){ this.modelAccounts.setRowCount(0); for (Person person : bankData.keySet()) { for (Account account : bankData.get(person)) this.modelAccounts.addRow(new Object[]{account.getAccountNr(), person.getLastName()+" "+person.getFirstName(), account.getAccountType(), account.getBalance()}); } } public void setBalance(){ this.tfBalance.setText(""); } public double getBalance(){ return Double.parseDouble(this.tfBalance.getText()); } public String getSsid(){ return this.tfSsid.getText(); } public String getLastName(){ return this.tfLastName.getText(); } public String getFirstName(){ return this.tfFirstName.getText(); } public String getPhoneNo(){ return this.tfPhoneNo.getText(); } public void setSsid(){ this.tfSsid.setText(""); } public void setLastName(){ this.tfLastName.setText(""); } public void setFirstName(){ this.tfFirstName.setText(""); } public void setPhoneNo(){ this.tfPhoneNo.setText(""); } public JTable getPersonsTable(){ return this.tablePersons; } public JTable getAccountsTable(){ return this.tableAccounts; } public JRadioButton getSavingRadioButton(){ return this.rbSaving; } public JRadioButton getSpendingRadioButton(){ return this.rbSpending; } public double getAmount(){ return Double.parseDouble(tfAmount.getText()); } }